package com.wjw.java.collection.generic;

/**
 * 自定义泛型方法：
 * public <K,V...> 泛型类型 方法名(参数列表){
 *
 * }
 *
 * 细节：
 * 1.泛型方法可以定义在普通类中,也可以定义在泛型类中
 * 2.当泛型方法被调用时,类型会确定
 * 3.public void eat(K k){},修饰符后没有<K,V...>,使用该方法不是泛型方法,只是使用了泛型
 */
public class Custom_Generic_Method {

    public static void main(String[] args) {
        Pig p = new Pig();
        p.show("张三",111);//此时调用泛型方法时,会确定方法的入参类型

        Fish<String,Double> fish = new Fish<>();
        fish.eat("你好啊",123);
    }
}
//普通类使用泛型方法
class Pig{
    public void run(){//普通方法

    }
    public<K,V> void show(K k, V v){//泛型方法
        System.out.println(k.getClass());
        System.out.println(v.getClass());
    }
}
//泛型类中使用泛型方法
class Fish<K,V>{
    public void run(){//普通方法

    }
    public<A,B> void show(A a,B b){//泛型方法,此时和泛型类中的泛型区分开

    }
    public<C> void eat(K k,C c){//K来源于泛型类,C来源于泛型方法
        System.out.println(k.getClass());
        System.out.println(c.getClass());
    }
}